package cn.iocoder.yudao.module.erp.common;

import cn.iocoder.yudao.module.erp.dal.dataobject.warehouseinlist.WarehouseInListDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.warehouseoutlist.WarehouseOutListDO;
import cn.iocoder.yudao.module.erp.dal.mysql.warehouseinlist.WarehouseInListMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.warehouseoutlist.WarehouseOutListMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 库存周转
 */
@Service
@Validated
public class InventoryTurnover {

    @Resource
    private WarehouseInListMapper warehouseInListMapper;
    @Resource
    private WarehouseOutListMapper warehouseOutListMapper;

    /**
     * 生成入库单编号
     * @return
     */
    private static String generateIncomingReceiptNumber() {
        // 获取当前时间
        Date now = new Date();
        // 定义日期时间格式，包含年月日时分秒和三位毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        // 格式化当前时间
        String timeStr = sdf.format(now);
        // 拼接前缀和时间字符串
        return "RKD" + timeStr;
    }

    /**
     * 生成出库单编号
     * @return
     */
    private static String generateOutgoingReceiptNumber() {
        // 获取当前时间
        Date now = new Date();
        // 定义日期时间格式，包含年月日时分秒和三位毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        // 格式化当前时间
        String timeStr = sdf.format(now);
        // 拼接前缀和时间字符串
        return "CKD" + timeStr;
    }

    /**
     * 生成入库单
     * @param warehouseInListDO
     * @return
     */
    public String creatWarehouseInList(WarehouseInListDO warehouseInListDO){
        // 生成入库单编号
        String inId = generateIncomingReceiptNumber();
        // 设置入库单编号
        warehouseInListDO.setInId(inId);
        // 插入入库单
        warehouseInListMapper.insert(warehouseInListDO);
        // 返回入库单编号
        return inId;
    }

    /**
     * 生成出库单
     * @param warehouseOutListDO
     * @return
     */
    public String creatWarehouseOutList(WarehouseOutListDO warehouseOutListDO){
        // 生成出库单编号
        String outId = generateOutgoingReceiptNumber();
        // 设置出库单编号
        warehouseOutListDO.setOutId(outId);
        // 插入出库单
        warehouseOutListMapper.insert(warehouseOutListDO);
        // 返回出库单编号
        return outId;
    }

}
